home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_actor_s3.cog < prev    next >
Text File  |  1998-02-25  |  3KB  |  122 lines

  1. # Jedi Knight Cog Script
  2. #
  3. # ACTOR_S3.COG
  4. #
  5. # ACTOR Script - Stormtrooper with Rail Detonator
  6. #
  7. # 7/28/97 [CR] Doubled saber damage for single player gameplay reasons
  8. #
  9. # [CYW, YB & CR]
  10. #
  11. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  12.  
  13.  
  14. symbols
  15.  
  16. message     killed
  17. message     damaged
  18. message     skill
  19.  
  20. template    powerup=+DRailGun                local
  21. template    limb=+stormlimb                  local
  22. thing       newThing                         local
  23. int         victim                           local
  24. int         bin                              local
  25. int         senderref=-1                     local
  26. ai          flee_ai=noweapon.ai              local
  27. int         damage                           local
  28. vector        currentpos                                local
  29.  
  30. end
  31.  
  32. # ========================================================================================
  33.  
  34. code
  35.  
  36. damaged:
  37.    damage = GetParam(0);
  38.    if(GetParam(1) == 16)                        // saber damage might cause dismemberment
  39.    {
  40.       damage = (damage * 2.0);
  41.       victim = GetSenderRef();
  42.       if(GetThingHealth(victim) <= damage) // but only if damage is sufficient to kill
  43.       {
  44.          if(rand() < 0.05)                      // random chance
  45.          {
  46.             AmputateJoint(victim, 5);
  47.             newThing = CreateThingAtPos(limb, GetThingSector(victim), GetThingPos(victim), '0 0 0');
  48.             SetThingVel(newThing, '0.0 0.7 1.4');
  49.          }
  50.       }
  51.    }
  52.    ReturnEx(damage);
  53.    return;
  54.  
  55. # ........................................................................................
  56.  
  57. killed:
  58.    victim = GetSenderRef();
  59.  
  60.    if (GetActorWeapon( victim, 1 ) != -1)
  61.    {
  62.       AmputateJoint( victim, 3 );
  63.       newThing = CreateThing(powerup, GetSenderRef());
  64.       SetLifeleft(newThing, 200.0);
  65.    }
  66.  
  67.    return;
  68.  
  69. # ........................................................................................
  70.  
  71. skill:
  72.    bin = GetParam(0);
  73.    if (bin == 24)                            // Force Pull
  74.    {
  75.       // he's a fighter, not a fleer... -srs
  76.  
  77.       senderref = GetSenderRef();
  78.             // If he hasn't been pulled yet...
  79.         if (GetActorWeapon (senderref, 1) != -1)
  80.         {
  81.             SetActorWeapon(senderref, 1, -1);
  82.  
  83.             newThing = CreateThing(powerup, GetSenderRef());
  84.             SetLifeleft(newThing, 30.0);
  85.  
  86.             AISetClass (senderref, flee_ai);
  87.             AISetMode(senderref, 0x4);
  88.  
  89.             ReturnEx(newThing);
  90.         }
  91.         else
  92.         {
  93.                 // Give the actor a shove towards the player.
  94.             currentpos = VectorSub(GetThingPos(GetLocalPlayerThing(), senderref));
  95.             currentpos = VectorScale(VectorNorm(currentPos), 250);
  96.             ApplyForce(senderref, currentpos);
  97.  
  98.             ReturnEx(-1);
  99.         }
  100.  
  101.       //AIFlee(senderref, GetLocalPlayerThing());
  102.  
  103.       Return;
  104.    }
  105.    else
  106.    if (bin == 31)                            // Force Grip
  107.    {
  108.       ReturnEx(10);                          // return base damage that is taken by this actor.
  109.       Return;
  110.    }
  111.    else
  112.    if (bin == 34)                            // Deadly Sight
  113.    {
  114.       ReturnEx(5);                           // return base damage that is taken by this actor.
  115.       Return;
  116.    }
  117.    ReturnEx(-1);
  118.    return;
  119.  
  120. end
  121.  
  122.